/*
 * rotvalve.h
 *
 *  Created on: May 15, 2021
 *      Author: soliber
 *      说明：	旋转阀API
 *      注意：	手册中的波特率不对，正确的波特率为9600
 *
 */

#ifndef BSP_ROTVALVE_ROTVALVE_H_
#define BSP_ROTVALVE_ROTVALVE_H_

#include "main.h"

/*---------------------宏定义和类型-----------------------*/
//孔位枚举
typedef enum
{
	HOLE1 = 0x00,
	HOLE2 = 0x01,
	HOLE3 = 0x02,
	HOLE4 = 0x03,
	HOLE5 = 0x04,
	HOLE6 = 0x05,
	HOLE7 = 0x06,
	HOLE8 = 0x07,
	HOLE9 = 0x08,
	HOLE10 = 0x09
}RotValve_Hole_Typedef;

/*---------------------API声明-----------------------*/
/*
 * 函数名：	HAL_RotValve_Init
 *
 * 说明：	初始化旋转阀
 * 			联机并设置默认孔位
 *
 * 参数：	hole，默认孔位
 *
 * 返回值：	操作状态
 * 			HAL_OK，操作成功，并旋转到默认孔位
 * 			HAL_TIMEOUT，超时，旋转阀无响应
 * 			HAL_ERROR，操作中发生了错误
 */
HAL_StatusTypeDef HAL_RotValve_Init(RotValve_Hole_Typedef hole);

/*
 * 函数名：	HAL_RotValve_Set
 *
 * 说明：	设置孔位
 *
 * 参数：	hole，目标孔位
 *
 * 返回值：	操作状态
 * 			HAL_OK，操作成功，并旋转到目标孔位
 * 			HAL_TIMEOUT，超时，旋转阀无响应
 * 			HAL_ERROR，响应错误或位置错误
 */
HAL_StatusTypeDef HAL_RotValve_Set(RotValve_Hole_Typedef hole);

/*
 * 函数名：	HAL_RotValve_Get
 *
 * 说明：	查询当前孔位
 *
 * 参数：	hole，查询到的孔位要存放的地址
 *
 * 返回值：	操作状态
 * 			HAL_OK，操作成功
 * 			HAL_TIMEOUT，超时，旋转阀无响应
 * 			HAL_ERROR，发生了错误
 */
HAL_StatusTypeDef HAL_RotValve_Get(RotValve_Hole_Typedef* hole);

#endif /* BSP_ROTVALVE_ROTVALVE_H_ */
